home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / tutor.arc / BR.SA < prev    next >
Text File  |  1990-01-05  |  7KB  |  225 lines

  1. BR       IDNT      1,0       BR, GD, GT, TR, TT, PER Commands        12/04/81
  2.  
  3.          XDEF      GCMD
  4.          XDEF      GOCMD
  5.          XDEF      GOCMD1
  6.          XDEF      GTCMD
  7.          XDEF      GDCMD
  8.          XDEF      BRCMD
  9.          XDEF      NOBRCMD
  10.          XDEF      TCMDHOT
  11.          XDEF      TRCMD
  12.          XDEF      TCMD
  13.          XDEF      TTCMD
  14.  SPC 1
  15.          XREF.S    BPADD
  16.          XREF.S    BPCNT
  17.          XREF.S    BPTILL
  18.          XREF      CKADDR
  19.          XREF      CKWADR
  20.          XREF      FIXDATA
  21.          XREF      FIXDCRLF
  22.          XREF      FNEXTF
  23.          XREF      FRELADDR
  24.          XREF      GETA
  25.          XREF      GETNUMA
  26.          XREF      MACSBUG
  27.          XREF      MSG008E
  28.          XREF      OUT1CR
  29.          XREF      PNT6HX
  30.          XREF      PNTZHX
  31.          XREF      PPHY
  32.          XREF.S    REGPC
  33.          XREF      SYNTAX
  34.          XREF.S    TRACECNT
  35.          XREF.S    TRACEON
  36.          XREF      UNSTACK
  37.          XREF      UNTRACE
  38.  
  39. EOT      EQU       4
  40.  PAGE
  41.          SECTION   11
  42.  
  43.  
  44. *
  45. *   ***T***   TRACE COMMAND
  46. *
  47. *
  48. TCMD     DS        0         "T" Alias for "TR" command
  49. TRCMD    LEA       TCMDHOT(PC),A0  IF NO PARAMTERS
  50.          BSR       FNEXTF    FIND NEXT FIELD
  51.          BSR       GETNUMA   FIND NUMBER OF INST TO TRACE
  52.          BSR       CKADDR    INSURE 24 BITS OR LESS
  53.          TST.L     D0
  54.          BNE.S     TCMD15
  55.  SPC 1
  56. TCMDHOT  DS        0         SPECIAL ENTRY FROM DECODE
  57.          MOVE.L    #1,D0     ZERO; MAKE TRACE ONE
  58. TCMD15   MOVE.L D0,TRACECNT
  59.          BRA.S TRACE2
  60.  SPC 4
  61. *
  62. ** TT ** "TRACE TILL" COMMAND
  63. *
  64. TTCMD    LEA       SYNTAX(PC),A0
  65.          BSR       FNEXTF    FIND NEXT FIELD
  66.          BSR       GETA      GET ADDRESS
  67.          BSR       CKWADR    CHECK WORD BOUNDRY ADDRESS
  68.  SPC 1
  69.          MOVE.L    D0,D6
  70.          BSR       PPHY      DISPLAY TILL ADDRESS
  71.  SPC 1
  72.          MOVE.L    D6,BPTILL  9TH BP
  73.          MOVE.L #$FFFF,TRACECNT  SET FOR A VERY LONG TIME
  74.  SPC 1
  75. TRACE2   MOVE.W    #-1,TRACEON  FOR DECODE OF NEXT COMMAND
  76.  SPC 1
  77.          MOVE.L    REGPC,D0
  78.          BSR       PPHY      DISPLAY START (PC) ADDRESS
  79.          BRA       UNTRACE
  80.          PAGE
  81. *
  82. *   ***GT***  RUN PROGRAM TO TEMP BREAKPOINT
  83. *
  84. GTCMD    LEA       SYNTAX(PC),A0   GET NUMBER ELSE PRINT "WHAT"
  85.          BSR       FNEXTF    FIND NEXT FIELD
  86.          BSR       GETA      GET ADDRESS
  87.          BSR       CKWADR    CHECK WORD BOUNDRY ADDRESS
  88.          MOVE.L    D0,D6     D6 = UNTIL ADDRESS
  89.          BSR       PPHY      PRINT PHYSICAL ADDRESS
  90.  SPC 1
  91. * IF TILL ADDRESS IN BREAKPOINT TABLE; DISPLAY WHAT
  92.          LEA       BPADD,A0 A0 = POINTER TO BP ADDRESSES
  93.          MOVE.L    #8,D7     D7 = # OF ADDRESS ALLOWED
  94. GT21     CMP.L     (A0)+,D6
  95.          BEQ       BCMD55    ALREADY IN TABLE -SHOW TABLE-
  96.          SUB.L     #1,D7
  97.          BNE       GT21
  98.  SPC 1
  99.          MOVE.L    D6,BPTILL 9TH BREAKPOINT
  100.          BSR.S     GOCMD1A   NORMAL STARTUP
  101.          BRA.S     GOCMD1
  102.  SPC 1
  103. GOSET1   LEA       GOCMD1A(PC),A0  WHERE TO GO IF NO PARAMERS
  104.          BSR       FNEXTF    FIND NEXT FIELD
  105.          BSR       GETA      GET ADDRESS
  106.          BSR       CKWADR    CHECK WORD BOUNDRY ADDRESS
  107.          MOVE.L    D0,REGPC
  108.  SPC 1
  109. GOCMD1A  MOVE.L    REGPC,D0  (ALSO SUBROUTINE ENTRY)
  110.          BSR       PPHY      PRINT ".PC" PHYSICAL ADDRESS
  111.          RTS
  112.  SPC 1
  113. GCMD     DS        0         "G" ALIAS FOR "GO"
  114. GOCMD    BSR       GOSET1    "GO" (AFTER TRACING ONE INST)
  115. GOCMD1   MOVE.L    #-1,TRACECNT  "FLAG" COUNTER AS SPECIAL
  116.          BRA       UNTRACE
  117.  SPC 2
  118. GDCMD    BSR       GOSET1    "GO DIRECT" Command
  119.          BRA       UNSTACK
  120.           PAGE
  121. *   ***BR***  SET AND PRINT BREAKPOINTS
  122.  SPC 1
  123. *                   DELETE ALL BREAKPOINTS
  124. NOBRCMD  BSR.S FIXBP         GET POINTERS
  125. BCMD01   CLR.L     (A0)+     CLEAR THE ADDRESS TABLE
  126.          SUB.L     #1,D7     DO IT 8 TIMES
  127.          BNE       BCMD01    *
  128.          BRA.S     BCMD7     DISPLAY EMPTY TABLE
  129.  SPC 1
  130. FIXBP    LEA       BPADD,A0  SET UP ADDRESS & COUNTER
  131.          MOVE.L    #8,D7     COUNTER
  132.          LEA       BPCNT,A2  COUNTS
  133.          RTS
  134.  SPC 3
  135. ************************************************************
  136. * THIS COMMAND SUPPORTS THE "NO" OPTION. COMMANDS THAT ALLOW
  137. * THE "NO" OPTION PROVIDE A HARD BRANCH 4 BYTES BEFORE THE
  138. * REGULAR COMMAND.
  139. ************************************************************
  140.  SPC 1
  141.          BRA.L  NOBR0        ENTRY FOR "NOBR" (IT LOOKS FOR PARMS OR NOT)
  142. BRCMD    LEA       BCMD7(PC),A0    WHERE TO GO IF NO PARMS
  143. BCMD0    BSR       FNEXTF    FIND NEXT FIELD
  144.          BSR       GETA      GET ADDRESS
  145.          BSR CKWADR          CHECK WORD BOUNDRY ADDRESS
  146.  SPC 1
  147.          BSR FIXBP  SET UP COUNTER & ADDRESS
  148. BCMD00   CMP.L (A0),D0 SEE IF ALREADY IN TABLE
  149.          BEQ.S BCMD33  GO CHECK FOR COUNT
  150.          ADD.L #4,A2  BUMP OTHER POINTER
  151.          ADD.L #4,A0 BUMP MAIN POINTER
  152.          SUB.L #1,D7
  153.          BNE BCMD00
  154.  SPC 1
  155.          BSR   FIXBP  GET ADDRESS & POINTERS
  156. BCMD3    TST.L (A0)  FIND AN EMPTY STOP
  157.          BNE.S BCMD5
  158.          MOVE.L D0,(A0)  PUT NEW ADDRESS IN TABLE
  159. BCMD33   CLR.L     (A2)      CLEAR CURRENT COUNT
  160.          MOVE.B (A5),D1  CHECK INPUT FOR COUNT
  161.          CMP.B #';',D1
  162.          BNE.S BCMD6  NO COUNT
  163.          ADD.L #1,A5  BUMP THE BUFFER SCANNER
  164.          BSR GETNUMA  GO GET THE COUNT
  165.          MOVE.L D0,(A2)  MOVE TO TABLE
  166.  SPC 1
  167. BCMD6    LEA     BCMD7(PC),A0  WHERE TO GO IF NO MORE PARAMETERS
  168.          BRA BCMD0
  169.  SPC 1
  170. BCMD5    ADD.L #4,A0  BUMP TABLE POINTER
  171.          ADD.L #4,A2  BUMP POINTER TO COUNTS
  172.          SUB.L #1,D7  LOOP AROUND
  173.          BNE BCMD3
  174.  SPC 1
  175. BCMD55   LEA       MSG008E(PC),A5  TABLE FULL; ERROR MESSAGE
  176.          BSR       FIXDATA
  177.          BRA.S BCMD77
  178.  SPC 1
  179. BCMD7    LEA       MSGBR(PC),A5        "BREAKPOINTS"
  180.          BSR       FIXDCRLF
  181. BCMD77   BSR       OUT1CR
  182.  
  183.          BSR FIXBP  SET ADDRESS & COUNTER
  184. BCMD8    MOVE.L    (A2)+,D6  D6 = COUNT
  185.          MOVE.L    (A0),D0   D0 = ADDRESS
  186.          BEQ.S     BCMD9     ZERO ADDRESS
  187.          BSR       FRELADDR            FORMAT RELATIVE ADDRESS
  188.          MOVE.B    #' ',(A6)+
  189.  SPC 1
  190.          MOVE.L    (A0),D0             FORMAT ABSOLUTE ADDRESS
  191.          BSR       PNT6HX
  192.          MOVE.L    D6,D0
  193.          BEQ.S     BCMD81    DONT PRINT ZERO COUNT
  194.          MOVE.B    #';',(A6)+
  195.          BSR PNTZHX  PRINT WITH ZERO SURPRESS
  196.  SPC 1
  197. BCMD81   BSR       OUT1CR
  198. BCMD9    ADD.L     #4,A0
  199.          SUB.L #1,D7   LOOP AROUND
  200.          BNE BCMD8
  201.          BRA       MACSBUG
  202.  
  203. MSGBR    DC.B      'BREAKPOINTS',EOT
  204.  SPC 4
  205. * NOBR COMMAND
  206. NOBR0    LEA       NOBRCMD(PC),A0  WHERE TO GO IF NO PARAMETERS
  207. NOBR1    BSR       FNEXTF    FIND NEXT FIELD
  208.          BSR       GETA     GO DECODE NUMBER/ADDRESS
  209.          TST.L D0
  210.          BEQ BCMD55          ZERO NOT VALID BREAKPOINT
  211.          BSR       CKWADR    CHECK WORD BOUNDRY ADDRESS
  212.  SPC 1
  213.          LEA       BPADD,A0    SET UP TABLE POINTER
  214.          MOVE.L #8,D7        COUNTER
  215. NOBR3    MOVE.L (A0),D1      GET BREAKPOINT IN TABLE
  216.          CMP.L D1,D0         SEE IF SAME
  217.          BEQ.S NOBR4
  218.          ADD.L #4,A0
  219.          SUB.L #1,D7
  220.          BNE NOBR3
  221. NOBR4    CLR.L (A0)          CLEAR THIS BREAKPOINT
  222.          LEA       BCMD7(PC),A0  WHERE TO GO IF NO PARMATER
  223.          BRA NOBR1
  224.  SPC 3
  225.          END